<?php
/**
 * 这又是一个控制器，用来显示单独的文章，一个控制器对应一个视图，因此，还需要创建一个page视图，这里只是读取数据的代码
 */

// 需要配置文件:
require('includes/utilities.inc.php');

try {

	// 过滤页面ID参数:
	if (!isset($_GET['id']) || !filter_var($_GET['id'], FILTER_VALIDATE_INT, array('min_range' => 1))) {
		throw new Exception('An invalid page ID was provided to this page.');
	}

	// 从数据库读取页面数据：
	$q = 'SELECT id, creatorId, title, content, DATE_FORMAT(dateAdded, "%e %M %Y") AS dateAdded FROM pages WHERE id=:id';
	$stmt = $pdo->prepare($q);
	$r = $stmt->execute(array(':id' => $_GET['id']));

	// 如果查到数据，则将记录放到Page对象里面：
	if ($r) {
		$stmt->setFetchMode(PDO::FETCH_CLASS, 'Page');
		$page = $stmt->fetch();

		// Confirm that it exists:
		if ($page) {

			// 将文章标题设为页面标题：
			$pageTitle = $page->getTitle();

			// 创建页面：
			include('includes/header.inc.php');
			include('views/page.html');		//引入视图文件

		} else {
			throw new Exception('文章ID非法。');
		}

	} else {
		throw new Exception('文章ID非法。');
	}

} catch (Exception $e) { // 注意，此处必须捕捉Exception类，而不是PDOException类，因为后者是前者的子类，一样可以被前者捕获，如果采用后者，则只能捕获PDOException

	$pageTitle = '错误！';
	include('includes/header.inc.php');
	include('views/error.html');	//引入错误视图

}

// Include the footer:
include('includes/footer.inc.php');